package com.cykj.enterprise.mapper;

import com.cykj.common.entity.HrDO;
import com.cykj.common.entity.JobDO;
import com.cykj.common.entity.JobTypeDO;
import com.cykj.common.entity.RecruitInfoDO;
import com.cykj.enterprise.vo.HrVO;
import com.cykj.enterprise.vo.RecruitInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @BelongsProject: smart_recruit_backend
 * @BelongsPackage: com.cykj.enterprise.mapper
 * @Author: 小白糖糖
 * @CreateTime: 2025-08-18 22:12
 * @Description: TODO
 * @Version: 1.0
 */
@Mapper
public interface RecruitMapper {
    /**
    * @Description: 通过人事ID获取人事信息，判断是否通过资质审核
    * @Param: [hrId]
    * @return: com.cykj.common.entity.HrDO
    */
    HrDO getHrInfo(@Param("hrId")Integer hrId);

    /**
    * @Description: 通过人事ID及人事身份，获取对应公司下的招聘信息
    * @Param: [recruitVO]
    * @return: java.util.List<com.cykj.common.entity.RecruitInfoDO>
    */
    List<RecruitInfoDO> getRecruitList(@Param("hrVO") HrVO hrVO);

    /**
    * @Description: 获取所有职位类型，用于新增职位
    * @Param: []
    * @return: java.util.List<com.cykj.common.entity.JobTypeDO>
    */
    List<JobTypeDO> getJobTypeList();

    /**
    * @Description: 根据选择的职位类别，获取对应职位类别下的具体职位
    * @Param: []
    * @return: java.util.List<com.cykj.common.entity.JobDO>
    */
    List<JobDO> getSpecificJobList(@Param("typeId")Integer typeId);

    /**
    * @Description: 查询该hr是否发布过相同职位
    * @Param: [hrId, jobId]
    * @return: com.cykj.common.entity.RecruitInfoDO
    */
    RecruitInfoDO getRecruitByHrIdAndCompanyId(@Param("hrId")Integer hrId,
                                               @Param("jobId")Integer jobId);
    
    /**
    * @Description: 企业端发布招聘信息
    * @Param: [recruitInfoVO]
    * @return: java.lang.Integer
    */
    Integer addRecruit(@Param("recruitInfoVO")RecruitInfoVO recruitInfoVO);

    /**
    * @Description: 企业端修改招聘信息
    * @Param: [recruitInfoVO]
    * @return: java.lang.Integer
    */
    Integer updateRecruit(@Param("recruitInfoVO")RecruitInfoVO recruitInfoVO);

    /**
    * @Description: 企业端删除招聘信息时，hr身份认证
    * @Param: [hrVO]
    * @return: com.cykj.common.entity.HrDO
    */
    HrDO identityCheck(@Param("hrVO") HrVO hrVO);

    /**
    * @Description: 企业端删除招聘信息
    * @Param: [recruitId]
    * @return: java.lang.Integer
    */
    Integer deleteRecruit(@Param("recruitId")Integer recruitId);
}
